// 引入 http 模块用于创建服务器
const http = require('http');
// 引入 fs 模块用于文件流操作
const fs = require('fs');
// 引入 path 模块用于处理文件路径
const path = require('path');

// 获取要读取的文件路径：有命令行参数则取第一个，否则默认读取自身
const filePath = process.argv[2] || __filename;
// 解析为绝对路径
const resolvedFilePath = path.resolve(filePath);

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
  // 使用 fs.createReadStream 创建可读流
  const readStream = fs.createReadStream(resolvedFilePath, 'utf8');

  // 监听可读流的 error 事件，处理文件不存在等错误
  readStream.on('error', (err) => {
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end(`Error: File ${filePath} does not exist or cannot be read.`);
  });

  // 将可读流通过管道（pipe）响应到浏览器端
  readStream.pipe(res);
});

// 服务器监听 8081 端口
server.listen(8081, () => {
  console.log(`Server is running at http://localhost:8081`);
  console.log(`Reading file: ${resolvedFilePath}`);
});